package com.mzw.huaxiarealestatebackend.controller;

import com.mzw.huaxiarealestatebackend.common.utils.DataResult;
import com.mzw.huaxiarealestatebackend.common.utils.DateFormat;
import com.mzw.huaxiarealestatebackend.entity.*;
import com.mzw.huaxiarealestatebackend.service.MailService;
import com.mzw.huaxiarealestatebackend.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 信箱
 *
 * @author makejava
 * @since 2023-12-22 17:10:09
 */
@Api(tags = "信箱")
@RestController
@RequestMapping("mail")
public class MailController {
    /**
     * 服务对象
     */
    @Resource
    private MailService mailService;

    @Resource
    private UserService userService;

    /**
     * 根据收件人id查询邮件
     *
     * @param id 主键
     * @return 单条数据
     */
    @ApiOperation("根据收件人id查询所有邮件")
    @GetMapping("{id}")
    public DataResult queryAllByAcceptId(@PathVariable("id") String id) {
        List<Mail> mail = mailService.queryAllByAcceptId(id);
        //判断是否有数据
        boolean isEmpty = mail.isEmpty();
        return new DataResult(isEmpty ? 403 : 200, isEmpty ? "查询失败" : "查询成功", mail);
    }
    /**
     * 根据收件人id查询未读邮件的数量
     * @param id 主键
     * @return 单条数据
     */
    @ApiOperation("根据收件人id查询未读邮件的数量")
    @GetMapping("/queryUnreadMail/{id}")
    public DataResult queryUnreadMail(@PathVariable("id") String id) {
        List<Mail> mail = mailService.queryAllByAcceptId(id);
        int count = 0;
        for (Mail mail1 : mail) {
            if (mail1.getMailStatus().equals("0")) {
                count++;
            }
        }
        return new DataResult(200, "查询成功", count);
    }
    /**
     * 发送邮件
     *
     * @param mail 实体
     * @return 新增结果
     */
    @ApiOperation("发送邮件")
    @PostMapping
    public DataResult insert(@RequestBody Mail mail) {
        //传入时间
        mail.setSendTime(DateFormat.getNowDateFormat());
        //设置邮件默认状态为0
        mail.setMailStatus("0");
        //根据发件人id查找姓名后传入姓名
        String sendNo = mail.getSendNo();
        User user = userService.getUserInfoById(sendNo);
        mail.setSendName(user.getUserName());
        boolean insert = mailService.insert(mail);
        return new DataResult(insert ? 200 : 403, insert ? "发送成功" : "发送失败");
    }
    /**
     * 根据邮件id查看邮件后将邮件状态改为已读
     * @param id 主键
     *@return 单条数据
     */
    @ApiOperation("根据邮件id查看邮件后将邮件状态改为已读")
    @PutMapping("{id}")
    public DataResult update(@PathVariable("id") String id) {
        Mail mail = new Mail();
        mail.setMailNo(id);
        mail.setMailStatus("1");
        boolean update = mailService.updateStatus(mail);
        return new DataResult(update ? 200 : 403, update ? "修改成功" : "修改失败");
    }


}

